package com.senlingspace.system.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.senlingspace.common.annotation.Excel;
import com.senlingspace.common.core.domain.BaseEntity;

/**
 * 退款记录对象 slkj_refund_record
 *
 * @author SenlingSpace
 * @date 2024-07-25
 */
public class SlkjRefundRecord extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private Long id;

    /**
     * 订单表ID
     */
    @Excel(name = "订单表ID")
    private Long orderId;

    /**
     * 退款单号
     */
    @Excel(name = "退款单号")
    private String refundNumber;

    /**
     * 退款金额;（分）
     */
    @Excel(name = "退款金额")
    private Integer refundAmount;

    /**
     * 退款方式; 现金、原路退回
     */
    @Excel(name = "退款方式")
    private String refundMethod;

    /**
     * 退款状态;退款中（REFUNDING）、已退款（REFUNDED）、FAIL（退款失败）
     */
    @Excel(name = "退款状态")
    private String refundStatus;

    /**
     * 退款原因
     */
    @Excel(name = "退款原因")
    private String refundReason;

    /**
     * 第三方退单号
     */
    @Excel(name = "第三方退单号")
    private String thirdRefundNumber;

    /**
     * 退款人
     */
    @Excel(name = "退款人")
    private Long refundBy;

    /**
     * 退款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "退款时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date refundTime;

    /**
     * 第三方退款信息 json串
     */
    @Excel(name = "第三方退款信息")
    private String additionalInfo;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setRefundNumber(String refundNumber) {
        this.refundNumber = refundNumber;
    }

    public String getRefundNumber() {
        return refundNumber;
    }

    public void setRefundAmount(Integer refundAmount) {
        this.refundAmount = refundAmount;
    }

    public Integer getRefundAmount() {
        return refundAmount;
    }

    public void setRefundMethod(String refundMethod) {
        this.refundMethod = refundMethod;
    }

    public String getRefundMethod() {
        return refundMethod;
    }

    public void setRefundStatus(String refundStatus) {
        this.refundStatus = refundStatus;
    }

    public String getRefundStatus() {
        return refundStatus;
    }

    public void setRefundReason(String refundReason) {
        this.refundReason = refundReason;
    }

    public String getRefundReason() {
        return refundReason;
    }

    public void setThirdRefundNumber(String thirdRefundNumber) {
        this.thirdRefundNumber = thirdRefundNumber;
    }

    public String getThirdRefundNumber() {
        return thirdRefundNumber;
    }

    public void setRefundBy(Long refundBy) {
        this.refundBy = refundBy;
    }

    public Long getRefundBy() {
        return refundBy;
    }

    public void setRefundTime(Date refundTime) {
        this.refundTime = refundTime;
    }

    public Date getRefundTime() {
        return refundTime;
    }

    public void setAdditionalInfo(String additionalInfo) {
        this.additionalInfo = additionalInfo;
    }

    public String getAdditionalInfo() {
        return additionalInfo;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("orderId", getOrderId())
                .append("refundNumber", getRefundNumber())
                .append("refundAmount", getRefundAmount())
                .append("refundMethod", getRefundMethod())
                .append("refundStatus", getRefundStatus())
                .append("refundReason", getRefundReason())
                .append("thirdRefundNumber", getThirdRefundNumber())
                .append("refundBy", getRefundBy())
                .append("refundTime", getRefundTime())
                .append("updateTime", getUpdateTime())
                .append("additionalInfo", getAdditionalInfo())
                .toString();
    }
}
